/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package managers;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.model.SelectItem;
import conexionBD.ConexionServidor;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.faces.event.AjaxBehaviorEvent;
import org.primefaces.event.map.OverlaySelectEvent;
import org.primefaces.model.map.DefaultMapModel;
import org.primefaces.model.map.LatLng;
import org.primefaces.model.map.MapModel;
import org.primefaces.model.map.Marker;
import catalogos.ExtraccionCatalogos;

/**
 *
 * @author olvarey
 */
@ManagedBean
@SessionScoped
public class managerPaginaPrincipal implements Serializable {

    private int departamentoSeleccionado;
    private int municipioSeleccionado;
    private MapModel emptyModel;
    private Marker marker;
    //Variables para mostra en el balloon
    private String direccionInmueble;
    private String nombreDepartamento;
    private String nombreMunicipio;
    //Instancia de la clase de extraccion de catalogos
    ExtraccionCatalogos catalogos = new ExtraccionCatalogos();

    public Marker getMarker() {
        return marker;
    }

    public MapModel getEmptyModel() {
        return emptyModel;
    }

    public int getDepartamentoSeleccionado() {
        return departamentoSeleccionado;
    }

    public void setDepartamentoSeleccionado(int departamentoSeleccionado) {
        this.departamentoSeleccionado = departamentoSeleccionado;
    }

    public int getMunicipioSeleccionado() {
        return municipioSeleccionado;
    }

    public void setMunicipioSeleccionado(int municipioSeleccionado) {
        this.municipioSeleccionado = municipioSeleccionado;
    }

    public String getDireccionInmueble() {
        return direccionInmueble;
    }

    public void setDireccionInmueble(String direccionInmueble) {
        this.direccionInmueble = direccionInmueble;
    }

    public String getNombreDepartamento() {
        return nombreDepartamento;
    }

    public void setNombreDepartamento(String nombreDepartamento) {
        this.nombreDepartamento = nombreDepartamento;
    }

    public String getNombreMunicipio() {
        return nombreMunicipio;
    }

    public void setNombreMunicipio(String nombreMunicipio) {
        this.nombreMunicipio = nombreMunicipio;
    }

    /** Creates a new instance of managerPaginaPrincipal */
    public managerPaginaPrincipal() {
        emptyModel = new DefaultMapModel();
    }

    public List<SelectItem> getListaDeptos() {
        List<SelectItem> departamentos = new ArrayList<SelectItem>();
        departamentos = catalogos.getListaDeptos();
        return departamentos;
    }

    public List<SelectItem> getListaMunicipiosFiltrados() {
        List<SelectItem> municipios = new ArrayList<SelectItem>();
        municipios = catalogos.getListaMunicipiosFiltrados(departamentoSeleccionado);
        return municipios;
    }

    public void agregarChinches(AjaxBehaviorEvent evento) {
        ConexionServidor myConexion = new ConexionServidor();
        String seleccionado = evento.getComponent().getClientId();
        emptyModel = new DefaultMapModel();
        if (seleccionado.equals("departamentos")) {
            try {
                Connection con = myConexion.getConnection();
                PreparedStatement ps = con.prepareStatement("select * from vista_geoubicacion where iddepartamento = ?");
                ps.setInt(1, departamentoSeleccionado);
                ResultSet rs = ps.executeQuery();
                while (rs.next()) {
                    emptyModel.addOverlay(new Marker(new LatLng(rs.getDouble("latitud"), rs.getDouble("longitud")), rs.getString("idinmueble"), "http://lh6.ggpht.com/_tKfoJnJID2c/Sd0Dwwjtd1I/AAAAAAAAAQk/E4krLtMukO0/CHSS_m_1_mod.jpg", "http://lh6.ggpht.com/_F4mqhEC2rU4/TK9TUF8yA0I/AAAAAAAAACA/DaTzITVE0eg/House-1-32.png"));
                    direccionInmueble = rs.getString("direccion_inm");
                    nombreMunicipio = rs.getString("nombremunicipio");
                    nombreDepartamento = rs.getString("nombredepartamento");
                }
                rs.close();
                ps.close();
                con.close();
            } catch (Exception ex) {
                System.out.println(ex.getMessage());
            }
        } else {
            try {
                Connection con = myConexion.getConnection();
                PreparedStatement ps = con.prepareStatement("select * from vista_geoubicacion where iddepartamento = ? and idmunicipio = ?");
                ps.setInt(1, departamentoSeleccionado);
                ps.setInt(2, municipioSeleccionado);
                ResultSet rs = ps.executeQuery();
                while (rs.next()) {
                    emptyModel.addOverlay(new Marker(new LatLng(rs.getDouble("latitud"), rs.getDouble("longitud")), rs.getString("idinmueble"), "http://lh6.ggpht.com/_tKfoJnJID2c/Sd0Dwwjtd1I/AAAAAAAAAQk/E4krLtMukO0/CHSS_m_1_mod.jpg", "http://lh6.ggpht.com/_F4mqhEC2rU4/TK9TUF8yA0I/AAAAAAAAACA/DaTzITVE0eg/House-1-32.png"));
                    direccionInmueble = rs.getString("direccion_inm");
                    nombreMunicipio = rs.getString("nombremunicipio");
                    nombreDepartamento = rs.getString("nombredepartamento");
                }
                rs.close();
                ps.close();
                con.close();
            } catch (Exception ex) {
                System.out.println(ex.getMessage());
            }
        }

    }

    public void onMarkerSelect(OverlaySelectEvent event) {
        marker = (Marker) event.getOverlay();
    }

    public void addMessage(FacesMessage message) {
        FacesContext.getCurrentInstance().addMessage(null, message);
    }
}
